package com.tjn.customGeneric;

/**
 * @author 陶镓妮
 * @version 1.0
 */
public class CustomInterfaceGeneric {
    public static void main(String[] args) {

    }
}
interface IUsb<U,R>{
    //以下为三个抽象方法，可以使用接口泛型
    R get(U u);
    void update(U u);
    void delete(R r, U u);

    //静态成员不能使用泛型
    //U u1;//接口中的属性都是静态的,不能使用泛型

    //默认方法使用泛型
    default R show(U u){
        return null;
    }
}
//泛型接口的类型，在继承接口或者实现接口时确定

//在继承接口时指定泛型接口的类型
interface IUsb2 extends IUsb<String,Integer>{
}
//因为IUsb2继承了IUsb并确定了类型，所以当AA实现IUsb2接口时，类型就直接确定了
class AA implements IUsb2{

    @Override
    public Integer get(String s) {
        return null;
    }

    @Override
    public void update(String s) {

    }

    @Override
    public void delete(Integer integer, String s) {

    }
}
//在实现接口时确定接口类型
class BB implements IUsb<String,Integer>{

    @Override
    public Integer get(String s) {
        return null;
    }

    @Override
    public void update(String s) {

    }

    @Override
    public void delete(Integer integer, String s) {

    }
}